# 让用户输入一个结果保存的文件路径
# 连续5次，让用户输入2个数和一个运算符，计算结果
# 将计算的内容输出到文件中，追加到最后
# 捕获所有可能出现的异常，提示用户出现的错误
# 确保程序无论用户输入什么，都不能造成崩溃
# 确保程序运行完后，多出5行
# 运行完
# 比如 保存到 c:\result.txt
# 内容:
#10/2=5
#15*3=45
#20+100=120
# ...

# 打开文件
# file_path = input('请输入存储文件的文件路径：')          # 让用户输入文件路径
# file = open(file_path,'a')                          # 按照用户输入的路径将文件打开
#
# # 数据运算并保存进文件
# for i in range(5):
#     num1 = int(input(f'请输入第{i+1}遍的第一个数：'))
#     num2 = int(input(f'请输入第{i+1}遍的第二个数：'))
#     operator = input(f'请输入第{i+1}遍的运算符：')
#     result = 0
#     if operator == '+':
#         result = num1 + num2
#     elif operator == '-':
#         result = num1 - num2
#     elif operator == '*':
#         result = num1 * num2
#     elif operator == '/':
#         result = num1 / num2
#     file.write(f'{num1}{operator}{num2}={result}\n')
#
# # 关闭文件
# file.close()

# 处理异常
# 1.处理文件打开异常
while True:                                                                 # while 死循环 实现了出现报错仍然可以再次输入的效果 直到路径正确 可以打开文件
    try:                                                                    # 通过try  except 来捕获打开文件时可能出现的报错
        file_path = input('请输入存储文件的文件路径：')  # 让用户输入文件路径
        file = open(file_path, 'a')  # 按照用户输入的路径将文件打开
        break
    except:
        print('输入的路径有误，无法打开文件！请重新输入路径！')

count = 0                                                         # 这里引入一个计数变量是为了能保证达到运算五次并运算结果保存在文件内
while count < 5:                                                  # while死循环 就是为了保证正常运行五次
    try:
        num1 = int(input(f'请输入第{count + 1}遍的第一个数：'))
        num2 = int(input(f'请输入第{count + 1}遍的第二个数：'))
        operator = input(f'请输入第{count + 1}遍的运算符：')
        result = 0
        if operator == '+':
            result = num1 + num2
        elif operator == '-':
            result = num1 - num2
        elif operator == '*':
            result = num1 * num2
        elif operator == '/':
            result = num1 / num2
        else:                                                     # 当操作符不是上面四种的时候 则产生一个报错信息
            raise Exception('输入的操作符不正确！')                   # 并为捕获输入操作符提供报错信息
        file.write(f'{num1}{operator}{num2}={result}\n')
        count += 1                                                # 计数用
    except ZeroDivisionError as e1:                               # 捕获计算时分母为0 的报错情况
        print('分母为零了！请重新输入数字！')
    except ValueError as e2:                                      # 捕获输入值的时候输入错误 的报错情况
        print('输入的数字错误，请重新输入正确的数字！')
    except Exception as e3:                                       # 捕获输入操作符错误 的报错情况
        print(e3)
    except:                                                       # 捕获其他未知错误 的报错情况
        print('出现未知错误，请重新输入数字和操作符！')

file.close()
print('程序运行结束！')